#!/bin/bash
if [ ! -e $2-treeps.aef ] ; then ps -ex -o %p, -o %P >$2-treeps.pp; fi
#echo content of $1
#cat $1
#echo end
#ps -ex -o %p, -o %P,  -o %C, -o %mem, -o ,%a

#GNU grep具有-Pperl样式正则表达式的-o选项，以及仅打印与模式匹配的选项的选项。可以使用环顾断言（在perlre联机帮助页中的扩展模式下进行描述）将它们组合在一起，以从确定为目的匹配的部分中删除部分grep模式-o。
#$ grep -oP 'foobar \K\w+' test.txt
#该\K是短格式（和更有效的形式）(?<=pattern)，你作为一个零宽度向后看要输出的文本之前断言使用。(?=pattern)可以在您要输出的文本之后用作零宽度的超前声明。
#举例来说，如果你想要的字匹配foo和bar，你可以使用：
#$ grep -oP 'foo \K\w+(?= bar)' test.txt
#或（对称）
#$ grep -oP '(?<=foo )\w+(?= bar)' test.txt


cat $1 | while  read pid 
do
  #echo now ppid:$pid
  if [ ! -z $pid ] ; then    grep -oP "^\s*\K\d+(?=,\s*$pid\s*$)"  $2-treeps.pp   >$2-treeps.1.1; fi
done

if [  -e $2-treeps.1.1 ]
then 
   #cat $2.1.1
   cat $2-treeps.1.1 >>$2
   mv -f $2-treeps.1.1 $2-treeps.1
   $0 $2-treeps.1 $2
fi

rm -f $2-treeps.*





